\pdfoptionpdfminorversion=5 % eleminate: PDF inclusion: found PDF version <1.5>, but at most version <1.4> allowed
\documentclass{beamer}
\let\Tiny=\tiny
%\documentclass[handout]{beamer}
%\documentclass[xcolor=dvipsnames]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}

\usepackage[
  %disable
  %textwidth=1cm
]{todonotes} % manual from http://www.tex.ac.uk/tex-archive/macros/latex/contrib/todonotes/todonotes.pdf
%examples:
%\todo[inline]{Add schedule table}
%\missingfigure[figwidth=0.8\columnwidth]{need to place figure here}

%\usetheme{Singapore}
%\usetheme{Madrid}
%\usetheme{Goettingen}
\usetheme{Dresden}
\definecolor{HsluBlueLight}{rgb}{0.41,0.58,0.66}
\definecolor{HsluBlueDark}{rgb}{0.18,0.29,0.34}
\usecolortheme[named=HsluBlueLight]{structure}
\setbeamercolor{alerted text}{fg=HsluBlueLight}
\setbeamercolor{normal text}{fg=HsluBlueDark}

\usepackage{tikz}
\usetikzlibrary{positioning,shapes,shadows,arrows}

\author[TA.PAIND.H12]{Klemens Imholz}
%\pdfauthor[TA.PAIND.H12]{Klemens Imholz}
\date{14. Januar 2013}

\begin{document}
\title[Bildverarbeitung auf GPU]{
	\begin{flushleft}
	\includegraphics[height=40pt]{fig/hslu}\\
	\end{flushleft}
	\begin{center}
	Bildverarbeitung auf GPU
	\end{center}
}

\begin{frame}
	\titlepage
\end{frame}

\begin{frame}
\frametitle{Präsentationsablauf}
%\tableofcontents
\begin{tabular}{|l|l|r|}
\hline
\textbf{Einleitung} & Aufgabenstellung, Analyse & 5' \\ \hline
\textbf{Konzept App} &  Klassendiagramm & \\
  & Algorithmus CPU/GPU & 10' \\
  & Implementation & \\ \hline
\textbf{Ergebnisse} & Gegenüberstellung CPU/GPU & 5' \\ \hline
\textbf{Demonstration} & Kurzdemo der App & 5' \\ \hline
\textbf{Rückblick} & Projektrückblick und Fazit & 5' \\ \hline
\end{tabular}
\end{frame}


\section{Einleitung}
\subsection{Tegra 2}
\begin{frame}
\frametitle{Übersicht Tegra-2 SoC}
\centering
\includegraphics[width=0.5\textwidth]{fig/OverviewTegra2WithGpu}\\
\scriptsize Quelle: \url{http://www.nvidia.com/content/PDF/tegra_white_papers/
Bringing_High-End_Graphics_to_Handheld_Devices.pdf}
\end{frame}


\subsection{Marktübersicht}
\begin{frame}
\frametitle{Marktübersicht Anwendungen: Prozesse auf GPU}
\begin{itemize}
\item Compute Unified Device Architecture (Cuda)
	\begin{itemize}
	\item Prozesse auf NVidia Grafikkarten verlagern
	\item Einsatzgebiet in wissenschaftlichen und technischen Berechnungen
	\end{itemize}
\item Open Source Computer Vision (OpenCV)
	\begin{itemize}
	\item Algorithmen für die Bildverarbeitung
	\item Zugriffe über Cuda auf GPU möglich
	\end{itemize}
\item Open Computing Language (OpenCL)
	\begin{itemize}
	\item Programmteile auf verschiedene Prozessoren/Shader zur Laufzeit auslagern
	\item Zugriffe über OpenGL, Cuda, und Embedded Systems möglich
	\end{itemize}
\item Open Graphics Library (OpenGL)
	\begin{itemize}
	\item in verschiedenen Grafikprozessoren integriert
	\item \alert{OpenGL ES}: for Embedded Systems (ES)
	\end{itemize}
\end{itemize}
\end{frame}


\subsection{Spezifikation}
\begin{frame}
\frametitle{Aufgabenstellung}
\textbf{Frage:} Inwiefern lässt sich die Geschwindigkeit \alert{einer Faltung über ein Bild mithilfe der GPU erhöhen}?
\begin{itemize}
\item Plattform: NVidia Tegra-2-Serie
\item Betriebssystem: Android \alert{4}
\item GPU Schnittstelle: OpenGL ES 2.0
\item Evaluation: \alert{Faltung einer Gauss-Funktion mit variabler Grösse}
\item Projektdauer: 17.09. - 21.12.12
\end{itemize}
\end{frame}

\section{Applikation}
\subsection{Architektur}
\begin{frame}
\frametitle{Klassendiagramm}
\includegraphics[width=0.9\textwidth]{fig/ClassDiagram}
\end{frame}

\begin{frame}
\frametitle{FrameBase-Klasse}
\begin{itemize}
\item Klasse FrameBase mit den Methoden
\begin{itemize}
\item \alert{pushImage:} verschiedene Typen möglich
\item \alert{getImage:} Rückgabe als Bitmap
\item \alert{getSurface:} für die Ansicht des Resultats
\item \alert{setBitmapColor:} Ausgabe in RGB oder Grau
\item \alert{setProcessingUnit:} GPU, CPU oder CPU mit FPU
\item \alert{setGaussianKernel:} für die Filterberechnung
\item \alert{setCustomKernel:} ein beliebiger Kern als Filter
\end{itemize}
\end{itemize}
\end{frame}

\subsection{Algorithmus}
\begin{frame}
\frametitle{Grundlagen Algorithmus}
\begin{center}
\scalebox{0.75}{\input{fig/pixel_algo.tkz}}
\end{center}
\end{frame}

\begin{frame}
\frametitle{Algorithmus Central Processing Unit}
\includegraphics[scale=0.45]{java/Pres_CpuRenderer}
\end{frame}

\subsection{GPU}
\begin{frame}
\frametitle{OpenGL ES 2.0}
\scalebox{0.6}{\input{fig/ogles_pipe_highlighted.tkz}}
\footnotesize
\url{http://www.opengles-book.com}
\end{frame}

\begin{frame}
\frametitle{Algorithmus Graphics Processing Unit}
\framesubtitle{Fragment Shader}
\includegraphics[scale=0.45]{glsl/Pres_vertex_shader}
\end{frame}

\begin{frame}
\frametitle{Algorithmus Graphics Processing Unit}
\framesubtitle{Vertex Shader}
\includegraphics[scale=0.45]{glsl/Pres_fragment_shader}
\end{frame}

\section{Messergebnisse}
\subsection{Konfiguration}
\begin{frame}
\frametitle{Messergebnisse Konfigurationen}
\begin{itemize}
\item Bildgrösse $640 x 696$
\item Messung mit Kernelgrössen: 1x1, 3x3, 7x7, 13x13, 21x21
\item Messung für CPU, CPU mit Floating Point Unit, GPU
\end{itemize}
\begin{equation*}
T_k = \frac{t_{m}-t_{1x1}}{N_{ks} - 1}
\end{equation*}
\end{frame}

\subsection{CPU}
\begin{frame}
\frametitle{Messergebnisse CPU}
\begin{tabular}{|l|r|r|r|}
\hline
 & & & \\
\textbf{Matrix} & $T_{min}$ [ms] & $T_{max}$ [ms] & $T_{mean}$ [ms] \\
\hline
1x1 & 736 & 747 & 741.8 \\ \hline
3x3 & 1065 & 1070 & 1067.8 \\ \hline
7x7 & 2519 & 2567 & 2542.4 \\ \hline
13x13 & 6853 & 6933 & 6890.8 \\ \hline
21x21 & 16834 & 17065 & 16973.8 \\ \hline
\end{tabular}
$T_k = 37.521\text{ms}$
\end{frame}

\begin{frame}
\frametitle{Messergebnisse CPU mit Floating Point Unit}
\begin{tabular}{|l|r|r|r|}
\hline
 & & & \\
\textbf{Matrix} & $T_{min}$ [ms] & $T_{max}$ [ms] & $T_{mean}$ [ms] \\
\hline
1x1 & 748 & 755 & 751.4 \\ \hline
3x3 & 1168 & 1190 & 1180.8 \\ \hline
7x7 & 3186 & 3232 & 3207.8 \\ \hline
13x13 & 9179 & 9267 & 9215.6 \\ \hline
21x21 & 22997 & 23071 & 23034.6 \\ \hline
\end{tabular}
$T_k = 50.644\text{ms}$
\end{frame}

\subsection{GPU}
\begin{frame}
\frametitle{Messergebnisse GPU}
\begin{tabular}{|l|r|r|r|}
\hline
 & & & \\
\textbf{Matrix} & $T_{min}$ [ms] & $T_{max}$ [ms] & $T_{mean}$ [ms] \\
\hline
1x1 & 238 & 259 & 250.8 \\ \hline
3x3 & 293 & 314 & 306.4 \\ \hline
7x7 & 692 & 710 & 705.6 \\ \hline
13x13 & 1814 & 1834 & 1824.6 \\ \hline
21x21 & 4280 & 4390 & 4357.2 \\ \hline
\end{tabular}
$T_k = 9.333\text{ms}$
\end{frame}

\begin{frame}
\frametitle{Messergebnisse Zusammenfassung}
\centering
\includegraphics[width=0.9\textwidth]{fig/measureCPUvsGPU}

\end{frame}

\begin{frame}
\frametitle{Verifikation}
\textbf{Frage:} Inwiefern lässt sich die Geschwindigkeit \alert{einer Faltung über ein Bild mithilfe der GPU erhöhen}?

\textbf{Antwort:} Mit den vorgestellten Algorithmen um den \textbf{Faktor 4}!
\begin{itemize}
\item CPU ohne FPU
\end{itemize}
\begin{equation*}
\frac{T_{k_{CPU}}}{T_{k_{GPU}}} = \frac{37.521\text{ms}}{9.333\text{ms}} = 4.02
\end{equation*}

\end{frame}

\section{Demo}
\begin{frame}
\frametitle{Demonstration GL20vsCPUDemo-Applikation}
\includegraphics[height=30mm]{fig/ScreenshotApp}
\begin{itemize}
\item Einstellung 1: RGB, CPU, Matrix 7x7 sigma 3
\item Einstellung 2: RGB, GPU, Matrix 7x7 sigma 3
\item Einstellung 3: RGB, GPU, Matrix 21x21 sigma 3
\end{itemize}
\end{frame}

\section{Rückblick}
\subsection{Pro und Contra}
\begin{frame}
\frametitle{Projektrückblick}
\begin{itemize}
\item[\textbf{+}] Projekt: Analyse, Recherche, Implementation, Verifikation
\item[\textbf{-}] Applikation
\begin{itemize}
\item Autonomes GPU Rendering
\item Optimierungen für die CPU: Multithreading, Datentyp
\end{itemize}
\item[\textbf{+}] Projektmanagement
\item[\textbf{-}] Granularität FrameBase
\item[\textbf{+}] Lerneffekt: Java, Android, OpenGL ES 2.0, Git, \LaTeX
\item[\textbf{-}] Test cases, automatisierte Tests
\item[\textbf{+}] Zusammenarbeit
\end{itemize}
\end{frame}

\subsection{Aufwand}
\begin{frame}
\frametitle{Aufwände in Prozent}
\centering
\includegraphics[scale=0.6]{fig/projectWorkPie}

\end{frame}

\section{Abschluss}
\begin{frame}
%\transblindsvertical
\vfill
\frametitle{Besten Dank für Ihre Aufmerksamkeit.}
\begin{center}
\includegraphics[scale=0.35]{fig/question_final}\\
\end{center}
\end{frame}

\end{document}
